# dict_data = {'a1': '33', 'bb': [{'gg': '23'}, {'jj': [{'gg': 'gg'}, {
#         'haha': [{'gg': 'gg'}, {'yyyu': [{'yy': '希望调试成功', 'kk': {'uu': 'hr', 'lll': {'gg': 'gg'}}}]}]}]}], 'gg': 'gg'}
# import jsonpath
# key = 'gg'
from jsonpath_rw import jsonpath,parse
# from  jsonpath import jsonpath
class test:
    def testt(self):
        key = "['bb'][0]['gg']"
        dict_data = {'a1': '33', 'bb': [{"at": 23}, {'jj': [{'gg': 'gg'}, {
            'haha': [{'gg': 'gg'}, {'yyyu': [{'yy': '希望调试成功', 'kk': {'uu': 'hr', 'lll': {'gg': 'gg'}}}]}]}]}],
                     'gg': 'gg'}
        jsonpath_expr = parse("bb[*].at")
        male = jsonpath_expr.find(dict_data)
        print("+++",male)
        # jsonpath_expr.update(dict_data,"7")
        print("---",[match.value for match in male])
        # print(male)
        # olds=[match.value for match in male]
        # for old in olds :
        #     s=key.replace()

        # print("输出数据",data)
        # print(key)
        # print(data[key])
if __name__ == '__main__':


    oper = test()
    oper.testt()

# def update(key,dict_data):
#     #判断需要修改的key是否在初始字典中，在则修改
#     if key in dict_data:
#         # print("1231",dict_data)
#         # 将key为'gg'的值修改成'张三'
#         dict_data[key]='张三'
#         print(dict_data[key])
#         #print(dict_data)
#         #循环字典获取到所有的key值和value值
#         # print(dict_data.items())
#         for keys,values in dict_data.items():
#             #判断valus值是否为列表或者元祖
#             if isinstance(values,(list,tuple)):
#                 #循环获取列表中的值
#                 for i in values:
#                     #判断需要修改的值是否在上一个循环出的结果中，在则修改
#                     if key in i and isinstance(i,dict):
#                         #调用自身修改函数，将key的值修改成'张三'
#                         update(key,i)
#                     else:
#                         #否者则调用获取value函数
#                         get_value(i)
#             elif isinstance(values,dict):
#                 if key in values:
#                     update(key,values)
#                 else:
#                     for keys,values in values.items():
#                         if isinstance(values,dict):
#                             update(key, values)
#     else:
#         #循环获取原始字典的values值
#         for keys,values in dict_data.items():
#             #判断values值是否是列表或者元祖
#             if isinstance(values,(list,tuple)):
#                 #如果是列表或者元祖则循环获取里面的元素值
#                 for i in values:
#                     #判断需要修改的key是否在元素中
#                     if key in i:
#                         #调用修改函数修改key的值
#                         update(key,i)
#                     else:
#                         #否则调用获取values的值函数
#                         get_value(i)
#             #判断values值是否为字典
#             elif isinstance(values,dict):
#                 #判断需要修改的key是否在values中
#                 if key in values:
#                     #调用修改函数修改key的值
#                     update(key,values)
#                 else:
#                     #获取values值的函数
#                     get_value(values)
#     return dict_data
#
#
# def get_value(tt):
#     #循环获取values的值
#     for values in tt.values():
#         #判断循环出的value的值是否为列表或者元祖
#         if isinstance(values, (list,tuple)):
#             #如果为列表或者元祖则循环获取列表或者元祖中的值
#             for i in values:
#                 #判断需要修改的值是否在循环出的值中,且i为字典
#                 if key in i and isinstance(i,dict):
#                     #调用修改函数，将key的值修改为'张三'
#                     update(key, i)
#                 else:
#                     #否则调用获取value函数
#                     get_value(i)
#         elif isinstance(values,dict):
#             if key in values:
#                 update(key, values)
#             else:
#                 get_value(values)
#
# # update(key,dict_data)
# key="bb"
# update(key,dict_data)
# print(dict_data['bb'][0]['gg'])